從另一個角度看,我認為遊戲中的從小小的讓角色移動,到一些嘆為觀止的特效,背後都是由大量的數學轉換而來的。
如果要達上述所說,讓角色移動,據我所知就是向量矩陣了,也是數學中,線性代數這一塊,向量的話,二維就夠了,矩陣的話,雖然「應該」不太會有3D的要處理,但就我所知,相機視角相關的運算,還是會需要4x4的運算。
今天只是先把一些基本的功能寫起來,之後會用到。
向量的話我這邊對二維的目前就先處理幾個
V2f V2fAdd(V2f a, V2f b);
V2f V2fSub(V2f a, V2f b);
V2f V2fScalef(V2f a, float f);
float V2fDot(V2f a, V2f b);
float V2fLen(V2f v);
V2f V2fNorm(V2f v);
float V2fDist(V2f a, V2f b);
然後就是依照自己的數學知識填寫功能了,或是直接去google忘記的功能 :)
矩陣就更少了,完成4x4矩陣的線性轉換(Linear Transformation),之後可能會發現只要3x3就好(因為少一軸),但就線這樣吧...
V4f Mat4MulV4f(Mat4 mat, V4f v);
Mat4 Mat4MulMat4(Mat4 m1, Mat4 m2);
寫在這邊為了讓我整理一下,一些我聽過的東西,但沒有接觸過,之後還有要處理的「數學」相關的東西。
lerp
與slerp
當程式設計師數學要多好?
這個問題叨擾著很多剛學習程式語言的夥伴們,當然我也不例外。
通常,如果把這個問題拿到去問一些學長前輩,或是在社群媒體跟業界的大佬們,我比較常聽到兩種答案
確實這兩個答案我都信服,也走就達到了解答,但時不時還是會一直詢問「數學要多好?」「數學要多好?」,不論是問自己,還是其他人,尤其是這在碰到正在學習「因工作原因,不得不學」的數學知識上,這個問題,比較像是從問「數學要多好?」,變成「我數學是不是真的很爛」。
後來,我忘記是從哪邊來的,我聽到了一個稍微不一樣的答案:
Q: 當程式設計師數學要多好?我要怎麼像你一樣厲害?
A: 你認為大老或是敬重的程式設計師,哪個你視為偶像的,覺得他的數學是差的。我沒有特別厲害,只是一點一點從中試錯而已,數學讓很多人排斥沒錯,但你這學一點一點往前堆近。